使用 Node-RED 发送电子邮件
本教程演示如何使用 Node-RED 从您的 OV80i 摄像头设置自动电子邮件通知。您将学习如何配置 Gmail 集成,并创建发送检测警报、系统状态更新和故障通知的流程,直接发送到您的邮箱。
您将构建的内容: 一个自动电子邮件系统,使用 Gmail SMTP 将 OV80i 检测结果、警报和通知发送给指定收件人。
实际应用场景: 当检测失败时即时收到电子邮件警报,向管理层发送每日质量报告,或自动通知维护团队系统问题——所有这些均由您的视觉检测系统自动完成。
先决条件
- 具有 Node-RED 访问权限的 OV80i 摄像头
- 用于发送邮件的 Gmail 账户
- Node-RED 流程的基本理解
- 访问 Google 账户安全设置权限
教程概述
我们将构建: 一个自动发送带有检测结果和系统警报的电子邮件通知的 Node-RED 流程。
所需时间: 20-30 分钟(包括 Gmail 设置)
学习技能: Gmail 应用密码设置、SMTP 配置、自动电子邮件通知
步骤 1:设置 Gmail 应用密码
1.1 启用两步验证
- 登录您的 Google 账户,访问 accounts.google.com
- 点击左侧导航菜单中的“安全”
- 找到“登录 Google”部分
- 点击“两步验证”
- 按照提示启用两步验证(如果尚未启用)
备注
启用两步验证后,才能创建应用密码。
1.2 生成应用密码
- 启用两步验证后返回“安全”页面
- 点击“应用密码”(位于“登录 Google”下)
- 选择应用类型为“邮件”
- 选择设备类型为“其他”
- 输入名称,如“OV80i Node-RED 邮件”
- 点击“生成”
1.3 保存您的应用密码
- 复制 Google 显示的 16 位字符密码
- 安全保存 — 您将在 Node-RED 配置中使用它
- 注意: 此密码仅显示一次,如遗失需重新生成
检查点: 您应已保存一条用于 Node-RED 的 16 位 Gmail 应用密码。
步骤 2:安装邮件节点(如有需要)
2.1 检查邮件节点
- 在 OV80i 摄像头上打开 Node-RED
- 在左侧调色板中查找输出部分的“email”节点
- 如果缺失,则需要安装邮件包
2.2 安装邮件包(如需)
- 点击 Node-RED 的汉堡菜单(≡)
- 选择“管理调色板”
- 点击“安装”标签
- 搜索“node-red-node-email”
- 点击对应包旁的“安装”
步骤 3:创建基础邮件流程
3.1 添加所需节点
- 导航至 IO Block > 配置 I/O 以访问 Node-RED
- 从调色板拖拽以下节点到画布:
- Inject 节点(用于测试)
- Email 节点(输出部分)
- 连接 inject 节点的输出到 email 节点的输入
3.2 基础流程结构
Inject → Email
流程目的: 简单邮件发送,用于测试和基础通知。
步骤 4:配置邮件内容
4.1 设置 Inject 节点
- 双击 inject 节点打开属性
- 设置负载(payload):
- 负载类型:字符串(string)
- 负载值:您的邮件正文文本(例如:“来自 OV80i 的检测警报”)
- 添加邮件主题:
-
点击“+ 添加” 添加属性
-
属性名:topic
-
属性值:您的邮件主题(例如:“OV80i 检测警报”)
-
4.2 示例基础配置
负载(邮件正文):
检测已完成,站点 1
状态:触发警报
时间:请查看时间戳详情
主题(邮件标题):
OV80i 检测警报 - 站点 1
4.3 保存 Inject 配置
- 给节点命名,例如“邮件触发器”
- 点击“完成” 保存配置
步骤 5:配置邮件 SMTP 设置
5.1 设置 Email 节点
- 双击 email 节点打开属性
- 配置基本设置:
- 名称:发送警报邮件(或其他描述性名称)
- 收件人:接收邮件地址(例如 quality@company.com)
5.2 配置 Gmail SMTP
- 服务器:
smtp.gmail.com
- 端口:
465
- 勾选“使用安全连接”
- 认证类型:Basic
- 用户ID:您的完整 Gmail 地址(例如 alerts@company.com)
- 密码:步骤 1 中生成的 16 位应用密码
5.3 安全设置
- 勾选“检查服务器证书有效性”
- 确认所有设置正确无误
- 点击“完成”保存邮件节点配置
检查点: 邮件节点无错误提示,显示收件人地址。
步骤 6:测试邮件流程
6.1 部署并测试
- 点击右上角“部署”按钮
- 等待“部署成功”消息
- 点击 inject 节点按钮(左侧灰色方块)
6.2 验证邮件发送
- 检查收件邮箱是否收到测试邮件
- 若未收到,检查垃圾邮件文件夹
- 查看 Node-RED 调试面板是否有错误信息
6.3 如有需要,排查故障
常见问题:
- 应用密码错误:重新生成 Gmail 应用密码
- SMTP 设置错误:确认服务器和端口正确
- 防火墙限制:确保允许 SMTP 出站流量
步骤 7:与检测结果集成
7.1 连接检测流程
要基于检测结果发送邮件:
- 找到您的主检测流程(以“All Block Outputs”开头)
- 将邮件流程作为检测处理的分支添加
- 连接到检测逻辑之后,但与最终结果并行
7.2 集成流程示例
All Block Outputs → [检测逻辑] → 最终通过/失败
↓
格式化邮件 → 发送邮件
7.3 动态邮件内容
用 function 节点替换 inject 节点,实现动态内容:
// 基于检测结果的动态邮件
const result = msg.payload.result ? "PASSED" : "FAILED";
const timestamp = new Date().toLocaleString();
const station = global.get("station_name") || "Unknown Station";
// 设置邮件主题
msg.topic = `Inspection ${result} - ${station}`;
// 设置邮件正文
msg.payload = `检测报告:
状态:${result}
站点:${station}
时间:${timestamp}
图片:${msg.payload.image_url || "无可用图片"}
请审核并采取相应措施。`;
return msg;
步骤 8:完整流程示例
8.1 导入现成流程
您可以导入以下完整流程 JSON:
[
{
"id": "email_node_1",
"type": "e-mail",
"name": "发送检测警报",
"server": "smtp.gmail.com",
"port": "465",
"secure": true,
"authtype": "BASIC",
"to": "quality@company.com"
},
{
"id": "format_email",
"type": "function",
"name": "格式化邮件内容",
"func": "const result = msg.payload.result ? 'PASSED' : 'FAILED';\nmsg.topic = `Inspection ${result}`;\nmsg.payload = `Status: ${result}\\nTime: ${new Date()}`;\nreturn msg;"
}
]
8.2 根据需求自定义
- 更新邮件地址为您的组织邮箱
- 修改邮件内容以符合具体需求
- 调整触发时机和条件
- 生产部署前充分测试
故障排除
常见问题
问题 | 现象 | 解决方案 |
---|---|---|
认证失败 | 出现“登录失败”错误 | 确认应用密码正确且已启用两步验证 |
连接超时 | 无邮件发送,出现超时错误 | 检查防火墙设置,确认 SMTP 服务器和端口正确 |
邮件进入垃圾箱 | 邮件被送达但在垃圾邮件文件夹 | 将发件人加入安全列表,优化邮件内容 |
流程未触发 | 无调试输出 | 检查流程连接和触发条件 |
调试您的邮件流程
- 在每个步骤后添加调试节点以跟踪数据
- 查看 Node-RED 日志获取详细错误信息
- 必要时用外部邮件客户端测试 SMTP 设置
- 确认摄像头到 Gmail 服务器的网络连接
成功!您的邮件集成已完成
您的 OV80i 摄像头现在可以:
✅ 自动发送检测结果的邮件通知
✅ 发送包含检测详情的丰富格式邮件
✅ 支持多收件人和升级工作流
✅ 提供定期报告和汇总
✅ 根据检测结果实现条件消息发送
最佳实践
邮件管理
- 使用描述性主题,明确状态指示
- 保持信息简洁但内容完整
- 包含时间戳和站点标识
- 通知中提供可操作信息
安全与可靠性
- 保护应用密码,安全存储并定期更换
- 使用专用邮箱账户发送系统通知
- 定期测试邮件发送确保可靠性
- 监控发送失败,准备备用通知方案
性能考虑
- 限制邮件发送频率,避免被识别为垃圾邮件
- 针对不同警报类型使用合适收件人列表
- 对高流量系统实施速率限制
- 注意邮件大小,避免包含过大附件
后续步骤
设置邮件通知后:
- 创建不同类型警报的邮件模板
- 设置各利益相关方的分发列表
- 实现关键问题的升级工作流
- 创建管理层定期报告
- 与其他通知系统集成(短信、Teams 等)